package com.petdog.infrastructure.mapper;

import com.petdog.infrastructure.entity.Report;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.time.LocalDateTime;
import java.util.List;

/**
 * 举报Mapper接口
 */
@Mapper
public interface ReportMapper {
    /**
     * 插入举报记录
     */
    int insert(Report report);
    
    /**
     * 根据ID查询举报记录
     */
    Report selectById(@Param("reportId") Long reportId);
    
    /**
     * 查询举报列表（带分页和筛选）
     */
    List<Report> selectList(
            @Param("offset") int offset,
            @Param("pageSize") int pageSize,
            @Param("contentType") String contentType,
            @Param("contentId") Long contentId,
            @Param("status") Integer status,
            @Param("startTime") LocalDateTime startTime,
            @Param("endTime") LocalDateTime endTime
    );
    
    /**
     * 查询举报总数
     */
    long countList(
            @Param("contentType") String contentType,
            @Param("contentId") Long contentId,
            @Param("status") Integer status,
            @Param("startTime") LocalDateTime startTime,
            @Param("endTime") LocalDateTime endTime
    );
    
    /**
     * 更新举报处理状态
     */
    int updateStatus(
            @Param("reportId") Long reportId,
            @Param("status") Integer status,
            @Param("handlerId") Long handlerId,
            @Param("reviewNote") String reviewNote,
            @Param("handleTime") LocalDateTime handleTime
    );
    
    /**
     * 查询指定内容的举报数量
     */
    int countByContent(@Param("contentType") String contentType, @Param("contentId") Long contentId);
}